/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package ManejoDB;

import com.mongodb.*;

import java.util.List;
import java.util.ArrayList;
import Beans.*;


import java.net.UnknownHostException;
import java.util.Arrays;
import java.util.logging.Level;
import java.util.logging.Logger;

/**
 *
 * @author vargas
 */
public class Clinicadb {

    DB db;

    public Clinicadb() {

        try {
            Mongo mongoClient = new Mongo("localhost", 27017);
            db = mongoClient.getDB("clinicadb");
        } catch (UnknownHostException ex) {
            Logger.getLogger(Clinicadb.class.getName()).log(Level.SEVERE, null, ex);
            db = null;
        }
    }

    public void insertarMedico(String Cédula, String Nombre, String Código, String Especialidad, String Teléfono) {


        try{
        DBCollection collection = db.getCollection("Medicos");

        BasicDBObject document = new BasicDBObject();
        document.put("_id", Cédula);
        document.put("nombre", Nombre);
        document.put("Codigo", Código);
        document.put("especialidad", Especialidad);
        document.put("telefono", Teléfono);


        collection.insert(document);
        }
         catch (MongoException e) {
	e.printStackTrace();
    }

    }
       public void actualizarMedico(String Cédula, String Nombre, String Código, String Especialidad, String Teléfono){
       
               try{
        DBCollection collection = db.getCollection("Medicos");

        BasicDBObject document = new BasicDBObject();
        document.put("nombre", Nombre);
        document.put("Codigo", Código);
        document.put("especialidad", Especialidad);
        document.put("telefono", Teléfono);
        
        BasicDBObject busqueda = new BasicDBObject().append("_id", "Cédula");


        collection.update(busqueda,document);
        }
         catch (MongoException e) {
	e.printStackTrace();
    }
   }
       
          public void eliminarMedico(String Cédula){
       
               try{
        DBCollection collection = db.getCollection("Medicos");
        
        BasicDBObject busqueda = new BasicDBObject().append("_id", Cédula);


        collection.remove(busqueda);
        }
         catch (MongoException e) {
	e.printStackTrace();
    }
   }
       

   public void insertarCentroMedico(String Nombre, String Identificador, String Dirección) {

         try{
        DBCollection collection = db.getCollection("CentrosMedicos");

        BasicDBObject document = new BasicDBObject();
        document.put("_id", Identificador);
        document.put("nombre", Nombre);
        document.put("direccion", Dirección);
        
        collection.insert(document);
        }
         catch (MongoException e) {
	e.printStackTrace();
    }
    }
          public void actualizarCentroMedico (String Nombre, String Identificador, String Dirección){
       
               try{
        DBCollection collection = db.getCollection("CentrosMedicos");

        BasicDBObject document = new BasicDBObject();
        document.put("nombre", Nombre);
        document.put("direccion", Dirección);
        
        BasicDBObject busqueda = new BasicDBObject().append("_id", "Identificador");


        collection.update(busqueda,document);
        }
         catch (MongoException e) {
	e.printStackTrace();
    }
   }
       
          public void eliminarCentroMedico(String identificador){
       
               try{
        DBCollection collection = db.getCollection("CentrosMedicos");
        
        BasicDBObject busqueda = new BasicDBObject().append("_id", identificador);


        collection.remove(busqueda);
        }
         catch (MongoException e) {
	e.printStackTrace();
    }
   }
       
   

    public void insertarPaciente(String Cédula, String Nombre, String FechaNacimiento, String Sexo, String Dirección) {

        DBCollection collection = db.getCollection("Pacientes");

        BasicDBObject document = new BasicDBObject();
        document.put("_id", Cédula);
        document.put("nombre", Nombre);
        document.put("fechaNacimiento", FechaNacimiento);
        document.put("sexo", Sexo);
        document.put("direccion", Dirección);


        collection.insert(document);
    }
    
    public void actualizarPaciente (String Cédula, String Nombre, String FechaNacimiento, String Sexo, String Dirección){
       
               try{
        DBCollection collection = db.getCollection("Pacientes");

        BasicDBObject document = new BasicDBObject();
        document.put("nombre", Nombre);
        document.put("fechaNacimiento", FechaNacimiento);
        document.put("sexo", Sexo);
        document.put("direccion", Dirección);
        
        BasicDBObject busqueda = new BasicDBObject().append("_id", Cédula);


        collection.update(busqueda,document);
        }
         catch (MongoException e) {
	e.printStackTrace();
    }
   }
       
          public void eliminarPaciente(String Cédula){
       
               try{
        DBCollection collection = db.getCollection("Pacientes");
        
        BasicDBObject busqueda = new BasicDBObject().append("_id", Cédula);


        collection.remove(busqueda);
        }
         catch (MongoException e) {
	e.printStackTrace();
    }
   }

    public void insertarCitas(String Identificador, String Día, String Hora, String CodigoMedico, String CedulaPaciente) {

        DBCollection collection = db.getCollection("Citas");

        BasicDBObject document = new BasicDBObject();
        document.put("_id", Identificador);
        document.put("dia", Día);
        document.put("hora", Hora);
        document.put("codigoMedico", CodigoMedico);
        document.put("cedulaPaciente", CedulaPaciente);


        collection.insert(document);
    }
        public void actualizarCitas (String Identificador, String Día, String Hora, String CodigoMedico, String CedulaPaciente){
       
               try{
        DBCollection collection = db.getCollection("Citas");

        BasicDBObject document = new BasicDBObject();
        document.put("dia", Día);
        document.put("hora", Hora);
        document.put("codigoMedico", CodigoMedico);
        document.put("cedulaPaciente", CedulaPaciente);
        
        BasicDBObject busqueda = new BasicDBObject().append("_id", Identificador);


        collection.update(busqueda,document);
        }
         catch (MongoException e) {
	e.printStackTrace();
    }
   }
       
          public void eliminarCitas(String Identificador){
       
               try{
        DBCollection collection = db.getCollection("Citas");
        
        BasicDBObject busqueda = new BasicDBObject().append("_id", Identificador);


        collection.remove(busqueda);
        }
         catch (MongoException e) {
	e.printStackTrace();
    }
   }

   public void insertarRecetasMédicas(String CodigoMedico, String NombreFarmaco, String DescripcionDosis) {

        DBCollection collection = db.getCollection("RecetasMedicas");

        BasicDBObject document = new BasicDBObject();
        document.put("codigoMedico", CodigoMedico);
        document.put("nombreFarmaco", NombreFarmaco);
        document.put("descripcionDosis", DescripcionDosis);


        collection.insert(document);
    }
    
          public void actualizarRecetasMédicas ( String CodigoMedico, String NombreFarmaco, String DescripcionDosis){
       
               try{
        DBCollection collection = db.getCollection("RecetasMedicas");

        BasicDBObject document = new BasicDBObject();
        document.put("nombreFarmaco", NombreFarmaco);
        document.put("descripcionDosis", DescripcionDosis);
        
        BasicDBObject busqueda = new BasicDBObject().append("codigoMedico", CodigoMedico);



        collection.update(busqueda,document);
        }
         catch (MongoException e) {
	e.printStackTrace();
    }}
   
       
          public void eliminarRecetasMédicas( String CodigoMedico){
       
               try{
        DBCollection collection = db.getCollection("RecetasMedicas");
        
        BasicDBObject busqueda = new BasicDBObject().append("codigoMedico", CodigoMedico);



        collection.remove(busqueda);
        }
         catch (MongoException e) {
	e.printStackTrace();
    }
   }

    public void insertarExpedienteMédico(String ID, String pacienteId) {

        DBCollection collection = db.getCollection("ExpedientesMedicos");

        BasicDBObject document = new BasicDBObject();
        document.put("_id", ID);
        document.put("pacienteId", pacienteId);


        collection.insert(document);

    }
              public void eliminarExpedienteMédico(String ID){
       
               try{
        DBCollection collection = db.getCollection("ExpedientesMedicos");
        
        BasicDBObject busqueda = new BasicDBObject().append("_id", ID);


        collection.remove(busqueda);
        }
         catch (MongoException e) {
	e.printStackTrace();
    }
   }

   public void insertarDictamenMédico(String Peso, String Padecimientos, String Medicamentos, String Fecha, String Hora) {

        DBCollection collection = db.getCollection("DictamenMedico");

        BasicDBObject document = new BasicDBObject();
        document.put("peso", Peso);
        document.put("padecimientos", Padecimientos);
        document.put("medicamentos", Medicamentos);
        document.put("fecha", Fecha);
        document.put("hora", Hora);

        collection.insert(document);

    }
                  public void eliminarDictamenMédico(String expedienteId, String Peso, String Padecimientos, String Medicamentos, String Fecha, String Hora){
       
               try{
        DBCollection collection = db.getCollection("ExpMedico");
        
        BasicDBObject busqueda = new BasicDBObject().append("expedienteId", expedienteId);
        busqueda.append("peso", Peso);
        busqueda.append("padecimientos", Padecimientos);
        busqueda.append("medicamentos", Medicamentos);
        busqueda.append("fecha", Fecha);
        busqueda.append("hora", Hora);

        collection.remove(busqueda);
        }
         catch (MongoException e) {
	e.printStackTrace();
    }
   }

   public void insertarProcedimiento(String expedienteId, String Peso, String Padecimientos, String Descripción, String Fecha, String Hora) {

        DBCollection collection = db.getCollection("Procedimientos");

        BasicDBObject document = new BasicDBObject();
        document.put("expedienteId", expedienteId);
        document.put("peso", Peso);
        document.put("padecimientos", Padecimientos);
        document.put("descripción", Descripción);
        document.put("fecha", Fecha);
        document.put("hora", Hora);

        collection.insert(document);

    }
                   public void eliminarProcedimiento(String expedienteId, String Peso, String Padecimientos, String Descripción, String Fecha, String Hora){
       
               try{
        DBCollection collection = db.getCollection("ExpMedico");
        
        BasicDBObject busqueda = new BasicDBObject().append("expedienteId", expedienteId);
        busqueda.append("peso", Peso);
        busqueda.append("padecimientos", Padecimientos);
        busqueda.append("padecimientos", Padecimientos);
        busqueda.append("fecha", Fecha);
        busqueda.append("hora", Hora);

        collection.remove(busqueda);
        }
         catch (MongoException e) {
	e.printStackTrace();
    }
   }

    

    List<Doctor> getMedico() {
        List<Doctor> result = new ArrayList<Doctor>();

        DBCollection collection = db.getCollection("Medicos");

        DBCursor cursor = collection.find();

        while (cursor.hasNext()) {
            DBObject curr = cursor.next();
            Doctor doc = new Doctor();
            doc.setmCedula(Integer.parseInt((String) curr.get("_id")));
            doc.setmCodigo((String) curr.get("Codigo"));
            doc.setmEspecialidad((String) curr.get("especialidad"));
            doc.setmNombre((String) curr.get("nombre"));
            doc.setmTelefono(Integer.parseInt((String) curr.get("telefono")));

            result.add(doc);
        }

        return result;

    }

    List<CentroMedico> getCentroMedico() {
        List<CentroMedico> result = new ArrayList<CentroMedico>();

        DBCollection collection = db.getCollection("CentroMedico");

        DBCursor cursor = collection.find();

        while (cursor.hasNext()) {
            DBObject curr = cursor.next();
            CentroMedico cmed = new CentroMedico();
            cmed.setmCodigo((String) curr.get("_id"));
            cmed.setmDireccion((String) curr.get("direccion"));
            cmed.setmNombre((String) curr.get("nombre"));

            result.add(cmed);

        }

        return result;

    }

    List<DictamenMedico> getDictamenMedico() {
        List<DictamenMedico> result = new ArrayList<DictamenMedico>();

        DBCollection collection = db.getCollection("DictMedico");

        DBCursor cursor = collection.find();

        while (cursor.hasNext()) {
            DBObject curr = cursor.next();
            DictamenMedico cmed = new DictamenMedico();
            cmed.setmFecha((String) curr.get("fecha"));
            cmed.setmHora((String) curr.get("hora"));
            cmed.setmMedicamentos((String) curr.get("medicamentos"));
            cmed.setmPadecimientos((String) curr.get("padecimientos"));

            cmed.setmPeso(Integer.parseInt((String) curr.get("peso")));

            cmed.setmExpId((String) curr.get("expedienteId"));



            result.add(cmed);

        }

        return result;

    }

    List<ProcedimientoMedico> getProcedimientoMedico() {
        List<ProcedimientoMedico> result = new ArrayList<ProcedimientoMedico>();

        DBCollection collection = db.getCollection("Procedimientos");

        DBCursor cursor = collection.find();

        while (cursor.hasNext()) {
            DBObject curr = cursor.next();
            ProcedimientoMedico cmed = new ProcedimientoMedico();
            cmed.setmFecha((String) curr.get("fecha"));
            cmed.setmHora((String) curr.get("hora"));
            cmed.setmDescripcion((String) curr.get("descripcion"));
            cmed.setmPadecimientos((String) curr.get("padecimientos"));

            cmed.setmPeso(Integer.parseInt((String) curr.get("peso")));

            cmed.setmExpId((String) curr.get("expedienteId"));



            result.add(cmed);

        }

        return result;
    }

    List<RecetaMedica> getRecetaMedica() {
         List<RecetaMedica> result = new ArrayList<RecetaMedica>();

        DBCollection collection = db.getCollection("DictamenMedico");

        DBCursor cursor = collection.find();

        while (cursor.hasNext()) {
            DBObject curr = cursor.next();
            RecetaMedica cmed = new RecetaMedica();

            cmed.setmExpId((String) curr.get("expedienteId"));



            result.add(cmed);

        }

        return result;
    }

    List<ExpedienteMedico> getExpedienteMedico() {
         List<ExpedienteMedico> result = new ArrayList<ExpedienteMedico>();

        DBCollection collection = db.getCollection("DictamenMedico");

        DBCursor cursor = collection.find();

        while (cursor.hasNext()) {
            DBObject curr = cursor.next();
            ExpedienteMedico cmed = new ExpedienteMedico();




            result.add(cmed);

        }

        return result;
    }

    List<Paciente> getPaciente() {
         List<Paciente> result = new ArrayList<Paciente>();

        DBCollection collection = db.getCollection("DictamenMedico");

        DBCursor cursor = collection.find();

        while (cursor.hasNext()) {
            DBObject curr = cursor.next();
            Paciente cmed = new Paciente();



            result.add(cmed);

        }

        return result;
    }

    List<Citas> getCitas() {
       

        
        return null;
    }
}